package com.c5p1ng.distributed.lock.core;

/**
 * 分布式锁接口
 */
public interface ILock {
    /**
     * 尝试获取锁
     * @param lockKey 分布式锁的键值
     * @param acquireTimeout 获取锁的超时时间
     * @param expireTime 锁的有效时间
     * @return
     */
    boolean tryAcquire(String lockKey, long acquireTimeout, long expireTime);

    /**
     * 获取锁
     * 使用默认获取锁的超时时间和锁的有效时间
     * @param lockKey 分布式锁的键值
     * @return
     */
    boolean acquire(String lockKey);

    /**
     * 释放锁
     * @return
     */
    boolean release();
}
